home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / blueprnt.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  15KB  |  459 lines

  1. /***************************************************************************
  2.  
  3. Blue Print memory map (preliminary)
  4.  
  5. driver by Nicola Salmoria
  6.  
  7.  
  8. CPU #1
  9. 0000-4fff ROM
  10. 8000-87ff RAM
  11. 9000-93ff Video RAM
  12. b000-b0ff Sprite RAM
  13. f000-f3ff Color RAM
  14.  
  15. read:
  16. c000      IN0
  17. c001      IN1
  18. c003      read dip switches from the second CPU
  19.  
  20. e000      Watchdog reset
  21.  
  22. write:
  23. c000      bit 0,1 = coin counters
  24. d000      command for the second CPU
  25. e000      bit 1 = flip screen
  26.  
  27. CPU #2
  28. 0000-0fff ROM
  29. 2000-2fff ROM
  30. 4000-43ff RAM
  31.  
  32. read:
  33. 6002      8910 #0 read
  34. 8002      8910 #1 read
  35.  
  36. write:
  37. 6000      8910 #0 control
  38. 6001      8910 #0 write
  39. 8000      8910 #1 control
  40. 8001      8910 #1 write
  41.  
  42. ***************************************************************************/
  43.  
  44. #include "driver.h"
  45. #include "vidhrdw/generic.h"
  46. #include "cpu/z80/z80.h"
  47.  
  48.  
  49.  
  50. extern unsigned char *blueprnt_scrollram;
  51.  
  52. void blueprnt_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  53. WRITE_HANDLER( blueprnt_flipscreen_w );
  54. void blueprnt_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  55.  
  56.  
  57.  
  58. static int dipsw;
  59.  
  60. static WRITE_HANDLER( dipsw_w )
  61. {
  62.     dipsw = data;
  63. }
  64.  
  65. READ_HANDLER( blueprnt_sh_dipsw_r )
  66. {
  67.     return dipsw;
  68. }
  69.  
  70. WRITE_HANDLER( blueprnt_sound_command_w )
  71. {
  72.     soundlatch_w(offset,data);
  73.     cpu_cause_interrupt(1,Z80_NMI_INT);
  74. }
  75.  
  76. static WRITE_HANDLER( blueprnt_coin_w )
  77. {
  78.     static int lastval;
  79.  
  80.     if (lastval == data) return;
  81.     coin_counter_w (0, data & 0x01);
  82.     coin_counter_w (1, data & 0x02);
  83.     lastval = data;
  84. }
  85.  
  86.  
  87.  
  88. static struct MemoryReadAddress readmem[] =
  89. {
  90.     { 0x0000, 0x5fff, MRA_ROM },
  91.     { 0x8000, 0x87ff, MRA_RAM },
  92.     { 0x9000, 0x93ff, MRA_RAM },
  93.     { 0x9400, 0x97ff, videoram_r },    /* mirror address, I THINK */
  94.     { 0xa000, 0xa01f, MRA_RAM },
  95.     { 0xb000, 0xb0ff, MRA_RAM },
  96.     { 0xc000, 0xc000, input_port_0_r },
  97.     { 0xc001, 0xc001, input_port_1_r },
  98.     { 0xc003, 0xc003, blueprnt_sh_dipsw_r },
  99.     { 0xe000, 0xe000, watchdog_reset_r },
  100.     { 0xf000, 0xf3ff, MRA_RAM },
  101.     { -1 }    /* end of table */
  102. };
  103.  
  104. static struct MemoryWriteAddress writemem[] =
  105. {
  106.     { 0x0000, 0x5fff, MWA_ROM },
  107.     { 0x8000, 0x87ff, MWA_RAM },
  108.     { 0x9000, 0x93ff, videoram_w, &videoram, &videoram_size },
  109.     { 0xa000, 0xa01f, MWA_RAM, &blueprnt_scrollram },
  110.     { 0xb000, 0xb0ff, MWA_RAM, &spriteram, &spriteram_size },
  111.     { 0xc000, 0xc000, blueprnt_coin_w },
  112.     { 0xd000, 0xd000, blueprnt_sound_command_w },
  113.     { 0xe000, 0xe000, blueprnt_flipscreen_w },    /* + gfx bank */
  114.     { 0xf000, 0xf3ff, colorram_w, &colorram },
  115.     { -1 }    /* end of table */
  116. };
  117.  
  118.  
  119.  
  120. static struct MemoryReadAddress sound_readmem[] =
  121. {
  122.     { 0x0000, 0x0fff, MRA_ROM },
  123.     { 0x2000, 0x2fff, MRA_ROM },
  124.     { 0x4000, 0x43ff, MRA_RAM },
  125.     { 0x6002, 0x6002, AY8910_read_port_0_r },
  126.     { 0x8002, 0x8002, AY8910_read_port_1_r },
  127.     { -1 }    /* end of table */
  128. };
  129.  
  130. static struct MemoryWriteAddress sound_writemem[] =
  131. {
  132.     { 0x0000, 0x0fff, MWA_ROM },
  133.     { 0x2000, 0x2fff, MWA_ROM },
  134.     { 0x4000, 0x43ff, MWA_RAM },
  135.     { 0x6000, 0x6000, AY8910_control_port_0_w },
  136.     { 0x6001, 0x6001, AY8910_write_port_0_w },
  137.     { 0x8000, 0x8000, AY8910_control_port_1_w },
  138.     { 0x8001, 0x8001, AY8910_write_port_1_w },
  139.     { -1 }    /* end of table */
  140. };
  141.  
  142.  
  143.  
  144. INPUT_PORTS_START( blueprnt )
  145.     PORT_START    /* IN0 */
  146.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  147.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
  148.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
  149.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  150.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  151.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  152.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  153.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  154.  
  155.     PORT_START    /* IN1 */
  156.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
  157.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  158.     PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
  159.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  160.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  161.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  162.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  163.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  164.  
  165.     PORT_START    /* DSW0 */
  166.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  167.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  168.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  169.     PORT_DIPNAME( 0x06, 0x00, DEF_STR( Bonus_Life ) )
  170.     PORT_DIPSETTING(    0x00, "20000" )
  171.     PORT_DIPSETTING(    0x02, "30000" )
  172.     PORT_DIPSETTING(    0x04, "40000" )
  173.     PORT_DIPSETTING(    0x06, "50000" )
  174.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Free_Play ) )
  175.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  176.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  177.     PORT_DIPNAME( 0x10, 0x00, "Maze Monster" )
  178.     PORT_DIPSETTING(    0x00, "2nd Maze" )
  179.     PORT_DIPSETTING(    0x10, "3rd Maze" )
  180.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Coin_A ) )
  181.     PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
  182.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  183.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coin_B ) )
  184.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_3C ) )
  185.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
  186.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  187.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  188.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  189.  
  190.     PORT_START    /* DSW1 */
  191.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  192.     PORT_DIPSETTING(    0x00, "2" )
  193.     PORT_DIPSETTING(    0x01, "3" )
  194.     PORT_DIPSETTING(    0x02, "4" )
  195.     PORT_DIPSETTING(    0x03, "5" )
  196.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  197.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  198.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  199.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  200.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  201.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  202.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Difficulty ) )
  203.     PORT_DIPSETTING(    0x00, "Easy" )
  204.     PORT_DIPSETTING(    0x10, "Medium" )
  205.     PORT_DIPSETTING(    0x20, "Hard" )
  206.     PORT_DIPSETTING(    0x30, "Hardest" )
  207.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  208.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  209.     PORT_DIPSETTING(    0x40, DEF_STR( On ) )
  210.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  211.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  212.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  213. INPUT_PORTS_END
  214.  
  215. INPUT_PORTS_START( saturn )
  216.     PORT_START    /* IN0 */
  217.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  218.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
  219.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  220.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  221.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  222.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  223.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY )
  224.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  225.  
  226.     PORT_START    /* IN1 */
  227.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
  228.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  229.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
  230.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  231.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  232.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  233.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  234.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  235.  
  236.     PORT_START    /* DSW0 */
  237.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  238.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  239.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  240.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
  241.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  242.     PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
  243.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  244.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  245.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  246.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  247.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  248.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  249.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  250.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  251.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  252.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  253.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  254.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  255.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
  256.     PORT_DIPSETTING(    0x00, "3" )
  257.     PORT_DIPSETTING(    0x40, "4" )
  258.     PORT_DIPSETTING(    0x80, "5" )
  259.     PORT_DIPSETTING(    0xc0, "6" )
  260.  
  261.     PORT_START    /* DSW1 */
  262.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  263.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  264.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  265.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
  266.     PORT_DIPSETTING(    0x02, "A 2/1 B 1/3" )
  267.     PORT_DIPSETTING(    0x00, "A 1/1 B 1/6" )
  268.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
  269.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  270.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  271.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  272.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  273.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  274.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  275.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  276.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  277.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
  278.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  279.     PORT_DIPSETTING(    0x20, DEF_STR( On ) )
  280.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  281.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  282.     PORT_DIPSETTING(    0x40, DEF_STR( On ) )
  283.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  284.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  285.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  286. INPUT_PORTS_END
  287.  
  288.  
  289.  
  290. static struct GfxLayout charlayout =
  291. {
  292.     8,8,    /* 8*8 characters */
  293.     512,    /* 512 characters */
  294.     2,    /* 2 bits per pixel */
  295.     { 512*8*8, 0 },    /* the bitplanes are separated */
  296.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  297.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  298.     8*8    /* every char takes 8 consecutive bytes */
  299. };
  300. static struct GfxLayout spritelayout =
  301. {
  302.     8,16,    /* 8*16 sprites */
  303.     256,    /* 256 sprites */
  304.     3,    /* 3 bits per pixel */
  305.     { 2*128*16*16, 128*16*16, 0 },    /* the bitplanes are separated */
  306.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  307.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  308.             8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  309.     16*8    /* every sprite takes 16 consecutive bytes */
  310. };
  311.  
  312.  
  313. static struct GfxDecodeInfo gfxdecodeinfo[] =
  314. {
  315.     { REGION_GFX1, 0, &charlayout,       0, 128 },
  316.     { REGION_GFX2, 0, &spritelayout, 128*4,   1 },
  317.     { -1 } /* end of array */
  318. };
  319.  
  320.  
  321.  
  322. static struct AY8910interface ay8910_interface =
  323. {
  324.     2,    /* 2 chips */
  325.     10000000/8,    /* 1.25 MHz (4H) */
  326.     { 25, 25 },
  327.     {            0, input_port_2_r },
  328.     { soundlatch_r, input_port_3_r },
  329.     { dipsw_w },
  330.     { 0 }
  331. };
  332.  
  333.  
  334.  
  335. static struct MachineDriver machine_driver_blueprnt =
  336. {
  337.     /* basic machine hardware */
  338.     {
  339.         {
  340.             CPU_Z80,
  341.             10000000/4,    /* 2.5 MHz (2H) */
  342.             readmem,writemem,0,0,
  343.             interrupt,1
  344.         },
  345.         {
  346.             CPU_Z80,    /* can't use CPU_AUDIO_CPU because this CPU reads the dip switches */
  347.             10000000/4,    /* 2.5 MHz (2H) */
  348.             sound_readmem,sound_writemem,0,0,
  349.             interrupt,4    /* IRQs connected to 32V */
  350.                         /* NMIs are caused by the main CPU */
  351.         }
  352.     },
  353.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  354.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  355.     0,
  356.  
  357.     /* video hardware */
  358.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  359.     gfxdecodeinfo,
  360.     16,128*4+8,
  361.     blueprnt_vh_convert_color_prom,
  362.  
  363.     VIDEO_TYPE_RASTER,
  364.     0,
  365.     generic_vh_start,
  366.     generic_vh_stop,
  367.     blueprnt_vh_screenrefresh,
  368.  
  369.     /* sound hardware */
  370.     0,0,0,0,
  371.     {
  372.         {
  373.             SOUND_AY8910,
  374.             &ay8910_interface
  375.         }
  376.     }
  377. };
  378.  
  379.  
  380.  
  381. /***************************************************************************
  382.  
  383.   Game driver(s)
  384.  
  385. ***************************************************************************/
  386.  
  387. ROM_START( blueprnt )
  388.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  389.     ROM_LOAD( "1m",           0x0000, 0x1000, 0xb20069a6 )
  390.     ROM_LOAD( "1n",           0x1000, 0x1000, 0x4a30302e )
  391.     ROM_LOAD( "1p",           0x2000, 0x1000, 0x6866ca07 )
  392.     ROM_LOAD( "1r",           0x3000, 0x1000, 0x5d3cfac3 )
  393.     ROM_LOAD( "1s",           0x4000, 0x1000, 0xa556cac4 )
  394.  
  395.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  396.     ROM_LOAD( "3u",           0x0000, 0x1000, 0xfd38777a )
  397.     ROM_LOAD( "3v",           0x2000, 0x1000, 0x33d5bf5b )
  398.  
  399.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  400.     ROM_LOAD( "c3",           0x0000, 0x1000, 0xac2a61bc )
  401.     ROM_LOAD( "d3",           0x1000, 0x1000, 0x81fe85d7 )
  402.  
  403.     ROM_REGION( 0x3000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  404.     ROM_LOAD( "d17",          0x0000, 0x1000, 0xa73b6483 )
  405.     ROM_LOAD( "d18",          0x1000, 0x1000, 0x7d622550 )
  406.     ROM_LOAD( "d20",          0x2000, 0x1000, 0x2fcb4f26 )
  407. ROM_END
  408.  
  409. ROM_START( blueprnj )
  410.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  411.     ROM_LOAD( "bp_01.bin",    0x0000, 0x1000, 0x2e746693 )
  412.     ROM_LOAD( "bp_02.bin",    0x1000, 0x1000, 0xa0eb0b8e )
  413.     ROM_LOAD( "bp_03.bin",    0x2000, 0x1000, 0xc34981bb )
  414.     ROM_LOAD( "bp_04.bin",    0x3000, 0x1000, 0x525e77b5 )
  415.     ROM_LOAD( "bp_05.bin",    0x4000, 0x1000, 0x431a015f )
  416.  
  417.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  418.     ROM_LOAD( "3u",           0x0000, 0x1000, 0xfd38777a )
  419.     ROM_LOAD( "3v",           0x2000, 0x1000, 0x33d5bf5b )
  420.  
  421.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  422.     ROM_LOAD( "bp_09.bin",    0x0000, 0x0800, 0x43718c34 )
  423.     ROM_LOAD( "bp_08.bin",    0x1000, 0x0800, 0xd3ce077d )
  424.  
  425.     ROM_REGION( 0x3000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  426.     ROM_LOAD( "bp_10.bin",    0x0000, 0x1000, 0x83da108f )
  427.     ROM_LOAD( "bp_11.bin",    0x1000, 0x1000, 0xb440f32f )
  428.     ROM_LOAD( "bp_12.bin",    0x2000, 0x1000, 0x23026765 )
  429. ROM_END
  430.  
  431. ROM_START( saturn )
  432.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  433.     ROM_LOAD( "r1",           0x0000, 0x1000, 0x18a6d68e )
  434.     ROM_LOAD( "r2",           0x1000, 0x1000, 0xa7dd2665 )
  435.     ROM_LOAD( "r3",           0x2000, 0x1000, 0xb9cfa791 )
  436.     ROM_LOAD( "r4",           0x3000, 0x1000, 0xc5a997e7 )
  437.     ROM_LOAD( "r5",           0x4000, 0x1000, 0x43444d00 )
  438.     ROM_LOAD( "r6",           0x5000, 0x1000, 0x4d4821f6 )
  439.  
  440.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  441.     ROM_LOAD( "r7",           0x0000, 0x1000, 0xdd43e02f )
  442.     ROM_LOAD( "r8",           0x2000, 0x1000, 0x7f9d0877 )
  443.  
  444.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  445.     ROM_LOAD( "r10",          0x0000, 0x1000, 0x35987d61 )
  446.     ROM_LOAD( "r9",           0x1000, 0x1000, 0xca6a7fda )
  447.  
  448.     ROM_REGION( 0x3000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  449.     ROM_LOAD( "r11",          0x0000, 0x1000, 0x6e4e6e5d )
  450.     ROM_LOAD( "r12",          0x1000, 0x1000, 0x46fc049e )
  451.     ROM_LOAD( "r13",          0x2000, 0x1000, 0x8b3e8c32 )
  452. ROM_END
  453.  
  454.  
  455.  
  456. GAME( 1982, blueprnt, 0,        blueprnt, blueprnt, 0, ROT270, "[Zilec] Bally Midway", "Blue Print (Midway)" )
  457. GAME( 1982, blueprnj, blueprnt, blueprnt, blueprnt, 0, ROT270, "[Zilec] Jaleco", "Blue Print (Jaleco)" )
  458. GAME( 1983, saturn,   0,        blueprnt, saturn,   0, ROT270, "[Zilec] Jaleco", "Saturn" )
  459.